Understanding my students or why I started learning Haskell, Part I

– Why a new language and why Haskell?

Two main reasons!

Reason 01: I need a new hacking challenge.

Knowing the Free Software hackers I have the pleasure to know it’s hard to think I am any good as a programmer. I think I am pretty good and fast in writing C. But comparing myself to my hacker friends I sometimes feel a bit limited in my understanding of programming. So I really think I need to extend my programming skills with a new language. Or even better, a new programming language paradigm. Since I know imperative/procedural programming (C), scripting (Bash) and OO (Java) the obvious next thing is to properly learn a functional language.

Functional languages or languages that can be used in a functional way I was considering: Lisp, Javascript, Scheme/Guile and Haskell.

…. sorry, Luca and Jose, Epsilon Algol are not functional 

Javascript:

I have been talking with a friend (Mikko) about my next language to learn for over a year and since he’s good at Javascript I always thought that Javascript (using it in a functional way) would be my next language. I think I would love the “competition” between us. But after some thoughts I decided let go off it – after all I am not a web programmer which is where Javascript is used mostly, I like lower level stuff…..  the idea of writing an Arduino simulator in Javascript is still kept in my brain.

Scheme/Guile:

It’s GNU’s extension language and Andy and Ludovic have been presenting it nicely to me… and they contribute a lot to it). I decided to give it a try.

Haskell:

Jon has done a good, almost fanatic, job promoting it and it is a language I almost learned when I studied – I learned Standard ML – Haskell wasn’t ready then I guess. Ok, I decided to give this a try too.

Lisp:

Hmmm, it’s kind of embarrassing to not know Lisp in Free Software communities. Still I skipped it. I think I wanted to go for a language which is used by friends of mine so I can discuss details over a chat or a beer.

Reason 02 coming up soon…. 

13 responses to “Understanding my students or why I started learning Haskell, Part I

  1. Pingback: Henrik Sandklef: Understanding my students or why I started learning Haskell, Part I | Open World

    • Well, yes Scheme is one of the dialects but since Scheme is smaller (Hrmppmrff – I read that from my memory so I may be totally and end up like a dancing fool) so I’d say that the opposite may be true – learning Common Lisp teaches you Scheme at the same time. But not trying to be a 200% dXXk in my answer: Yes, Common Lisp and Scheme are Lisp dialects so learning one will absolutely make you kind of learn the other!

      One thing that is a bit annoying for me is that I don’t know Emacs Lisp. Since I live most of my days in Emacs it’s kind of stupid so perhaps I should push Emacs Lisp to the list of languages to consider …. I may even have an old GNU press book on Emacs Lisp.

      • I’m not a Lisper, but from my understanding learning one dialect isn’t teaching you the others any more than learning one “C language” teaches you the others. Granted, you’ll have an easier time understanding the syntax of, say Java once you learned C++ but you’ll still have to delve into the nitty-gritty of the language.

        However, I believe that if there’s a “C-language” in the sense there’s a “Lisp language” then once you studies C, or Perl, or Javascript, Java, C# et al, you learned “it” the way once you learned “Lisp” once you learned Emacs-Lisp or Scheme or CL or PLT/Racket etc.

  2. Pingback: Understanding my students or why I started learning Haskell, Part II | hesa's Weblog

  3. After having done Scheme, Common Lisp and Emacs Lisp quite a bit, I would say they are similar in certain language aspects, but they have different paradigms. Scheme is almost all about functional programming. Emacs Lisp is about Emacs, which is…hey, I love Emacs, so I’m going to be using Emacs Lisp. Common Lisp has a very different community (with a huge amount of non-free work going on), and the programming has a different focus.

    I use Emacs Lisp and Scheme fairly often, and there’s a lot of mutual learning. Common Lisp did not help me with Scheme or Emacs Lisp, although there are some things that make a lot more sense after having spent time with Common Lisp.

    All of them are very different from what makes sense to me as a programmer: I really like “write it, compile it, run it, wait, run it again” — mostly doing stuff from the command line. There’s a different kind of non-UNIX thinking going on with all the Lisps. I think they assume a certain interactivity that I’m just not thinking about.

  4. Let me also say this about my efforts to learn Haskell. I find the language really interesting, and aesthetically pleasing. One of the crucial things I’ve found about choosing a language is not necessarily the language itself, or what’s already written in it, but the development environment. I like C because of Autotools, Emacs and everything else in GNU that is set up for it. I still have to check and see what Haskell has going in this direction. Other languages do not support my preferred way of doing things with their development tools and documentation tools, so I have trouble adapting to them. I hope Haskell does fit in, because I’m really interested in trying it out.

    The other thing that’s need (of course) is a compelling project…

    • But if the language would make GNU toolchain unneeded? I use and silently thank the Autotools etc every day – so I don’t mean to be disrespectful. So I would say that the devel env should not enforce too much work flow on me. It should liberate me – or at least make things easy for my users (Debian for example in the case of GNU Xnee).

      BTW, if a language doesn’t have a good emacs mode I don’t think I will switch to it.

      • The issue is whether it’s easy to get up and running with the language, rather than a specific need for a toolchain. I’m saying I wouldn’t like C nearly as much if the Autotools didn’t exist. If it was a hassle to use, I wouldn’t enjoy it so much. However, I always seem to run into a hassle with other languages: that’s not because they need Autotools, but because I need to understand what their analog of Autotools is. For example, installing needed libraries and linking them in and all that jazz. In order to use them, I need to have a sophisticated understanding of how to do all that, or else I’ll just be writing “Hello World” for a while. If nowhere in the documentation is how to do all that, then I’ll be stuck in amateur-land!

        If a language doesn’t fit into Emacs, then it doesn’t fit in with me — that’s why Emacs Lisp is the ultimate programming language!

      • Ah ok…

        Funny…..found my Emacs lisp manual today.

        But Haskell it is now for a while, while at the same time compiling a list of things I’ve found mostly work to explain concepts like variables and functions to newbies. Perhaps an intro book some day?

  5. Pingback: Understanding my students or why I started learning Haskell, Part III | hesa's Weblog

  6. Pingback: Ενημερωτικό Δελτίο FSFE – Μάρτιος 2014 | Τροπή…

Leave a comment